{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=\"rtl\" align=\"center\">\n",
    "<font face=\"XB Zar\" size=5>\n",
    "    <font face=\"IranNastaliq\" size=5>\n",
    "      به نام خدا\n",
    "    </font>\n",
    "    <br>\n",
    "    <font size=3>\n",
    "      دانشگاه صنعتی شریف - دانشکده مهندسی کامپیوتر\n",
    "    </font>\n",
    "    <br>\n",
    "    <font color=blue size=5>\n",
    "      مقدمه‌ای بر یادگیری ماشین\n",
    "    </font>\n",
    "    <br>\n",
    "    <hr/>\n",
    "    <font color=red size=6>\n",
    "      مباحث تکمیلی:‌ Federated Learning\n",
    "    </font>\n",
    "    <br>\n",
    "      نویسندگان:‌ آرین احدی نیا\n",
    "    <hr>\n",
    "<br>\n",
    "  <div align=\"right\">\n",
    "\n",
    "  <div>\n",
    "</div>"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "<font color=\"red\" size=5>\n",
    "مقدمه\n",
    "</font>\n",
    "<hr />\n",
    "\n",
    "Federated Learning که از این پس برای اختصار آن را FL خواهیم نامید، راهکاری برای یادگیری توزیع شده بدون به اشتراک گذاشته شدن داده ها است. در این روش به جای آنکه مستقیما داده را به اشتراک بگذاریم،‌ بردار گرادیانی به سرور ارسال می‌کنیم که سرور بر اساس آن بردار گرادیانی، مدل را به روز می‌کند. این روش به دلیل اینکه داده ها را به اشتراک نمی‌گذارد، می‌تواند برای داده های حساس مانند داده های پزشکی و داده های مربوط به اطلاعات شخصی مفید باشد. این روش در این دفترچه به صورت مختصر بررسی خواهد شد و در نهایت چالش‌ها و مشکلات آنها و برخی از راهکار‌های برای فائق آمدن بر این مشکلات ارائه خواهد شد.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "<font color=\"red\" size=5>\n",
    "ساختار مدل\n",
    "</font>\n",
    "<hr />\n",
    "\n",
    "ایده FL اولین بار توسط McMahan در سال ۲۰‍۱۷ مطرح شد. در ابتدا لازم است که برای معرفی FL بر روی برخی تعاریف با هم به توافق برسیم.\n",
    "\n",
    "- کاربر یا Client که مدل مدل را از سرور دریافت می‌کند، آن را به روز رسانی می‌کند و بروز رسانی خود را به سرور ارسال می‌کند.\n",
    "\n",
    "- Server که مدل را در خود نگه‌داری می‌کند و با جمع‌آوری بروزرسانی ارسال شده توسط کاربران مدل را به روز می‌کند.\n",
    "\n",
    "- بردار گرادیان: در این‌جا منظور از بردار گرادیان،‌ بردار بروزرسانی‌ای است که وزن‌های مدل را بروزرسانی می‌کند.\n",
    "\n",
    "شکل زیر شمای کلی این سیستم را نشان می‌دهد.\n",
    "\n",
    "<center><img src=\"./img1.png\"></img></center>\n",
    "\n",
    "الگوریتم اولیه‌ای که برای FL ارائه شده است، FedAvg نام دارد. این الگوریتم به در هر مرحله به این صورت کار می‌کند.\n",
    "\n",
    "- سرور گروهی از کاربران را انتخاب می‌کند.\n",
    "\n",
    "- سرور مدل را به گروهی از کاربران ارسال می‌کند.\n",
    "\n",
    "- کاربران با استفاده از داده‌های خودشان مدل را آموزش می‌دهند و بروز‌رسانی اعمال شده بر روی مدل را در قالب یک بردار گرادیان به سرور ارسال می‌کنند.\n",
    "\n",
    "- سرور بردار‌های گرادیان را میانگین می‌گیرد.\n",
    "\n",
    "- سرور مدل اصلی را بروز می‌کند.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "<font color=\"red\" size=5>\n",
    "\n",
    "پیاده‌سازی و ریاضیات\n",
    "\n",
    "</font>\n",
    "<hr />\n",
    "\n",
    "در این قسمت به پیاده‌سازی FL از پایه و توضیح قسمت‌های مختلف آن پرداخته می‌شود. این پیاده‌سازی تماما مبتنی بر PyTorch است و از هیچ کتابخانه‌ دیگری در آن استفاده نشده است.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "import torch\n",
    "import torchvision\n",
    "import tqdm\n",
    "import numpy as np\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "تنظیمات سیستم ما به این صورت خواهد بود که ۸ کاربر خواهیم داشت که در ۳۰ راند مدل را Train خواهند کرد. هر یک از کاربران در سه ایپاک مدل را ترین خواهند کرد و نرخ یادگیری آنها برابر 0.02 خواهد بود.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "num_clients = 8\n",
    "rounds = 10\n",
    "epochs_per_client = 3\n",
    "learning_rate = 2e-2\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "<font color=\"red\" size=5>\n",
    "\n",
    "دادگان مورد استفاده\n",
    "\n",
    "</font>\n",
    "<hr />\n",
    "\n",
    "در این نوت‌بوک ما به پیاده‌سازی یک مدل برای طبقه‌بندی دادگان MNIST می‌پردازیم. در سلول زیر به بارگیری دادگان این مجموعه داده می‌پردازیم.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_dataset = torchvision.datasets.MNIST(\n",
    "    \"./working\",\n",
    "    train=True,\n",
    "    download=True,\n",
    "    transform=torchvision.transforms.transforms.ToTensor(),\n",
    ")\n",
    "test_dataset = torchvision.datasets.MNIST(\n",
    "    \"./working\",\n",
    "    train=False,\n",
    "    download=True,\n",
    "    transform=torchvision.transforms.transforms.ToTensor(),\n",
    ")\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "حال مجموعه داده آموزش را به نسبت ۴ به ۱ به داده آموزش و داده صحت‌سنجی برای تنظیم ابرپارامتر‌ها تقسیم می‌کنیم.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "train_dataset, val_dataset = torch.utils.data.random_split(\n",
    "    train_dataset,\n",
    "    [\n",
    "        int(len(train_dataset) * 0.80),\n",
    "        int(len(train_dataset) * 0.20),\n",
    "    ],\n",
    ")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(48000, 12000, 10000)"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "total_train_size = len(train_dataset)\n",
    "total_test_size = len(test_dataset)\n",
    "total_val_size = len(val_dataset)\n",
    "\n",
    "total_train_size, total_val_size, total_test_size\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "لطفا توجه بفرمایید که دادگان MNIST از ۱۰ کلاس هستند که هر یک از آنها عکسی به ابعاد ۲۸ در ۲۸ پیکسل است. هر یک از batchهای مورد استفاده شامل ۱۲۸ داده خواهد بود.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "classes = 10\n",
    "input_dim = 784\n",
    "batch_size = 128\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "<font color=\"red\" size=5>\n",
    "\n",
    "استفاده از سخت‌افزار مناسب\n",
    "\n",
    "</font>\n",
    "<hr />\n",
    "\n",
    "از آنجایی که مدل مورد استفاده یک مدل عمیق است، ترجیح می‌دهیم که از GPU برای آموزش مدل استفاده کنیم. بنابرین در سلول زیر بررسی می‌کنیم که اگر GPU در دسترس باشد، از آن و اگر نباشد از CPU استفاده کنیم.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "device(type='cuda')"
      ]
     },
     "execution_count": 77,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def get_device():\n",
    "    \"\"\"\n",
    "    Returns:\n",
    "        torch.device: 'cuda' if GPU is available, else 'cpu'\n",
    "    \"\"\"\n",
    "    return torch.device(\"cuda\") if torch.cuda.is_available() else torch.device(\"cpu\")\n",
    "\n",
    "\n",
    "def to_device(object, device):\n",
    "    \"\"\"\n",
    "    Recursively moves tensors to chosen device.\n",
    "    Args:\n",
    "        object: Object to move to device.\n",
    "        device (torch.device): Device to move to.\n",
    "    Returns:\n",
    "        Object: Object on chosen device.\n",
    "    \"\"\"\n",
    "    if isinstance(object, (list, tuple)):\n",
    "        return [to_device(x, device) for x in object]\n",
    "    return object.to(device, non_blocking=True)\n",
    "\n",
    "\n",
    "device = get_device()\n",
    "device\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "حال DataLoader زیر را به عنوان یک Wrapper برای دیتاست‌های عادی تولید می‌کنیم که داده را به دستگاه مورد نظر انتقال دهد.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "class DeviceDataLoader(torch.utils.data.DataLoader):\n",
    "    \"\"\"\n",
    "    Wrap a dataloader to move data to a device\n",
    "\n",
    "    Args:\n",
    "        dl (torch.utils.data.DataLoader): dataloader to wrap\n",
    "        device (torch.device): device to move data to\n",
    "    \"\"\"\n",
    "\n",
    "    def __init__(self, dl, device):\n",
    "        \"\"\"\n",
    "        Args:\n",
    "            dl (torch.utils.data.DataLoader): dataloader to wrap\n",
    "            device (torch.device): device to move data to\n",
    "        \"\"\"\n",
    "        self.dl = dl\n",
    "        self.device = device\n",
    "\n",
    "    def __iter__(self):\n",
    "        \"\"\"\n",
    "        Yields:\n",
    "            object: batch of data on chosen device\n",
    "        \"\"\"\n",
    "        for batch in self.dl:\n",
    "            yield to_device(batch, self.device)\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.dl)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "تابع زیر برای این منظور است که دقت خروجی بر روی یک batch محاسبه شود.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [],
   "source": [
    "def batch_accuracy(outputs, labels):\n",
    "    \"\"\"\n",
    "    Calculate accuracy of batch of predictions.\n",
    "    Args:\n",
    "        outputs (torch.Tensor): Predictions.\n",
    "        labels (torch.Tensor): Labels.\n",
    "    Returns:\n",
    "        torch.Tensor: Accuracy.\n",
    "    \"\"\"\n",
    "    with torch.no_grad():\n",
    "        _, predictions = torch.max(outputs, dim=1)\n",
    "        return torch.tensor(torch.sum(predictions == labels).item() / len(predictions))\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "<font color=\"red\" size=5>\n",
    "\n",
    "طراحی مدل\n",
    "\n",
    "</font>\n",
    "<hr />\n",
    "\n",
    "طراحی مدل برای FL هیج تفاوتی با طراحی مدل عادی ندارد. در این مساله ما یک مدل Feed Forward ساده تعریف می‌کنیم. تنها تغییری که در این مدل ایجاد کرده‌ایم، این است که ما تعدادی از لایه‌ها را به اصطلاح ترک‌ می‌کنیم تا تغییرات آنها را برای ارسال به سرور داشته باشیم.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [],
   "source": [
    "class FederatedNet(torch.nn.Module):\n",
    "    \"\"\"\n",
    "    Simple CNN for MNIST classification adapted for federated learning with tracking of layers.\n",
    "    \"\"\"\n",
    "\n",
    "    def __init__(self):\n",
    "        \"\"\"\n",
    "        Tracks layers for later use in federated learning.\n",
    "        \"\"\"\n",
    "        super().__init__()\n",
    "        self.conv1 = torch.nn.Conv2d(1, 20, 7)\n",
    "        self.conv2 = torch.nn.Conv2d(20, 40, 7)\n",
    "        self.maxpool = torch.nn.MaxPool2d(2, 2)\n",
    "        self.flatten = torch.nn.Flatten()\n",
    "        self.linear = torch.nn.Linear(2560, 10)\n",
    "        self.non_linearity = torch.nn.ReLU()\n",
    "        self.track_layers = {\n",
    "            \"conv1\": self.conv1,\n",
    "            \"conv2\": self.conv2,\n",
    "            \"linear\": self.linear,\n",
    "        }\n",
    "\n",
    "    def forward(self, x_batch):\n",
    "        \"\"\"\n",
    "        Forward pass of the network.\n",
    "        Args:\n",
    "            x_batch (torch.Tensor): Input batch.\n",
    "        Returns:\n",
    "            torch.Tensor: Output of the network.\n",
    "        \"\"\"\n",
    "        return torch.nn.Sequential(\n",
    "            self.conv1,\n",
    "            self.non_linearity,\n",
    "            self.conv2,\n",
    "            self.non_linearity,\n",
    "            self.maxpool,\n",
    "            self.flatten,\n",
    "            self.linear,\n",
    "        )(x_batch)\n",
    "\n",
    "    def get_track_layers(self):\n",
    "        return self.track_layers\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "تابع زیر یک batch را به عنوان ورودی به مدل می‌دهد و دقت و loss را بر روی آن محاسبه می‌کند.\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [],
   "source": [
    "def process_batch(model, batch):\n",
    "    \"\"\"\n",
    "    Process a batch of data.\n",
    "    Args:\n",
    "        model (torch.nn.Module): Model to use for processing.\n",
    "        batch (torch.Tensor): Batch of data.\n",
    "    Returns:\n",
    "        torch.Tensor: Loss.\n",
    "        torch.Tensor: Accuracy.\n",
    "    \"\"\"\n",
    "    images, labels = batch\n",
    "    outputs = model(images)\n",
    "    loss = torch.nn.functional.cross_entropy(outputs, labels)\n",
    "    accuracy = batch_accuracy(outputs, labels)\n",
    "    return (loss, accuracy)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "تابع زیر وظیفه آموزش مدل بر روی یک مجموعه داده را دارد. این تابع با آموزش عادی مدل عمیق تفاوتی ندارد.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "def fit(model, dataset, epochs, lr, batch_size=batch_size, opt=torch.optim.SGD):\n",
    "    \"\"\"\n",
    "    Fit a model to a dataset.\n",
    "    Args:\n",
    "        model (torch.nn.Module): Model to fit.\n",
    "        dataset (torch.utils.data.Dataset): Dataset to fit to.\n",
    "        epochs (int): Number of epochs to train for.\n",
    "        lr (float): Learning rate.\n",
    "        batch_size (int): Batch size.\n",
    "        opt (torch.optim.Optimizer): Optimizer to use.\n",
    "    Returns:\n",
    "        list: List of tuples of (loss, accuracy) for each epoch.\n",
    "    \"\"\"\n",
    "    dataloader = DeviceDataLoader(\n",
    "        torch.utils.data.DataLoader(dataset, batch_size, shuffle=True), device\n",
    "    )\n",
    "    optimizer = opt(model.parameters(), lr)\n",
    "    history = []\n",
    "    for epoch in range(epochs):\n",
    "        losses = []\n",
    "        accs = []\n",
    "        for batch in dataloader:\n",
    "            loss, acc = process_batch(model, batch)\n",
    "            loss.backward()\n",
    "            optimizer.step()\n",
    "            optimizer.zero_grad()\n",
    "            loss.detach()\n",
    "            losses.append(loss)\n",
    "            accs.append(acc)\n",
    "        avg_loss = torch.stack(losses).mean().item()\n",
    "        avg_acc = torch.stack(accs).mean().item()\n",
    "        history.append((avg_loss, avg_acc))\n",
    "    return history\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "همان‌گونه که می‌دانید در FL کاربران در هر مرحله مدل را از سرور دریافت می‌کنند و آن مدل را آموزش می‌دهد. تابع زیر برای این منظور است. این تابع با دریافت پارامتر‌های یک مدل، آن ها را با پارامتر‌های فعلی مدل جایگزین می‌کند.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [],
   "source": [
    "def apply_parameters(model, parameters_dict):\n",
    "    \"\"\"\n",
    "    Apply parameters to model.\n",
    "    Args:\n",
    "        model (torch.nn.Module): Model to apply parameters to.\n",
    "        parameters_dict (dict): Dictionary of parameters.\n",
    "    \"\"\"\n",
    "    with torch.no_grad():\n",
    "        for layer_name in parameters_dict:\n",
    "            model.track_layers[layer_name].weight.data *= 0\n",
    "            model.track_layers[layer_name].bias.data *= 0\n",
    "            model.track_layers[layer_name].weight.data += parameters_dict[layer_name][\n",
    "                \"weight\"\n",
    "            ]\n",
    "            model.track_layers[layer_name].bias.data += parameters_dict[layer_name][\n",
    "                \"bias\"\n",
    "            ]\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "تابع زیر به این منظور است که پارامتر‌های مدل را استخراج کند و آنها را در قالب یک دیکشنری در بیاورد که بتوان آنها بین کاربر و سرور جابجا کرد.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_parameters(model):\n",
    "    \"\"\"\n",
    "    Get parameters from model.\n",
    "    Args:\n",
    "        model (torch.nn.Module): Model to get parameters from.\n",
    "    Returns:\n",
    "        dict: Dictionary of parameters.\n",
    "    \"\"\"\n",
    "    parameters_dict = dict()\n",
    "    for layer_name in model.track_layers:\n",
    "        parameters_dict[layer_name] = {\n",
    "            \"weight\": model.track_layers[layer_name].weight.data,\n",
    "            \"bias\": model.track_layers[layer_name].bias.data,\n",
    "        }\n",
    "    return parameters_dict\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "این تابع برای بررسی دقت مدل است که به عنوان خروجی loss و دقت مدل را بر روی داده تست بر‌میگرداند.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [],
   "source": [
    "def evaluate(model, dataset, batch_size=batch_size):\n",
    "    \"\"\"\n",
    "    Evaluate a model on a dataset.\n",
    "    Args:\n",
    "        model (torch.nn.Module): Model to evaluate.\n",
    "        dataset (torch.utils.data.Dataset): Dataset to evaluate on.\n",
    "        batch_size (int): Batch size.\n",
    "    Returns:\n",
    "        tuple: Tuple of (loss, accuracy).\n",
    "    \"\"\"\n",
    "    dataloader = DeviceDataLoader(\n",
    "        torch.utils.data.DataLoader(dataset, batch_size), device\n",
    "    )\n",
    "    losses = []\n",
    "    accs = []\n",
    "    with torch.no_grad():\n",
    "        for batch in dataloader:\n",
    "            loss, acc = process_batch(model, batch)\n",
    "            losses.append(loss)\n",
    "            accs.append(acc)\n",
    "    avg_loss = torch.stack(losses).mean().item()\n",
    "    avg_acc = torch.stack(accs).mean().item()\n",
    "    return (avg_loss, avg_acc)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "<font color=\"red\" size=5>\n",
    "\n",
    "مدل کاربر\n",
    "\n",
    "</font>\n",
    "<hr />\n",
    "\n",
    "حال مدل مورد استفاده برای هر کاربر را پیاده‌سازی می‌کنیم. هر کاربر یک مدل و یک مجموعه داده دارد. فرآیند آموزش هر کاربر به این صورت است که ابتدا وزن‌ها را به عنوان ورودی از سرور دریافت می‌کند، سپس این وزن‌ها به بر روی شبکه اعمال می‌شود و بر روی آن وزن‌ها مدل آموزش داده می‌شود. در نهایت خروجی مرحله آموزش به عنوان وزن‌های بروز شده به سرور ارسال می‌شود.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Client:\n",
    "    \"\"\"\n",
    "    Client class.\n",
    "    \"\"\"\n",
    "\n",
    "    def __init__(self, client_id, model, dataset):\n",
    "        \"\"\"\n",
    "        Args:\n",
    "            client_id (int): Client ID.\n",
    "            model (torch.nn.Module): Model.\n",
    "            dataset (torch.utils.data.Dataset): Dataset.\n",
    "        \"\"\"\n",
    "        self.client_id = client_id\n",
    "        self.model = to_device(model, device)\n",
    "        self.dataset = dataset\n",
    "        self.history = []\n",
    "\n",
    "    def get_dataset_size(self):\n",
    "        \"\"\"\n",
    "        Get dataset size.\n",
    "        Returns:\n",
    "            int: Dataset size.\n",
    "        \"\"\"\n",
    "        return len(self.dataset)\n",
    "\n",
    "    def get_client_id(self):\n",
    "        \"\"\"\n",
    "        Get client ID.\n",
    "        Returns:\n",
    "            int: Client ID.\n",
    "        \"\"\"\n",
    "        return self.client_id\n",
    "\n",
    "    def train(self, parameters_dict):\n",
    "        \"\"\"\n",
    "        Train the model.\n",
    "        Args:\n",
    "            parameters_dict (dict): Dictionary of parameters.\n",
    "        Returns:\n",
    "            dict: Dictionary of parameters.\n",
    "        \"\"\"\n",
    "        apply_parameters(self.model, parameters_dict)\n",
    "        train_history = fit(\n",
    "            self.model,\n",
    "            self.dataset,\n",
    "            epochs_per_client,\n",
    "            learning_rate,\n",
    "            batch_size,\n",
    "        )\n",
    "        self.history.extend(train_history)\n",
    "        print(\n",
    "            f\"{self.client_id}: Loss = {round(train_history[-1][0], 4)}, Accuracy = {round(train_history[-1][1], 4)}\"\n",
    "        )\n",
    "        return get_parameters(self.model)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "<font color=\"red\" size=5>\n",
    "\n",
    "مجموعه دادگاه کاربر\n",
    "\n",
    "</font>\n",
    "<hr />\n",
    "\n",
    "حال در این سلول مجموعه دادگان در هم ریخته را تقسیم‌بندی می‌کنیم و به هر کاربر یک بخش از آن را می‌دهیم.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [],
   "source": [
    "examples_per_client = total_train_size // num_clients\n",
    "client_datasets = torch.utils.data.random_split(\n",
    "    train_dataset,\n",
    "    [\n",
    "        min(i + examples_per_client, total_train_size) - i\n",
    "        for i in range(0, total_train_size, examples_per_client)\n",
    "    ],\n",
    ")\n",
    "clients = [\n",
    "    Client(\"client_\" + str(i), FederatedNet(), client_datasets[i])\n",
    "    for i in range(num_clients)\n",
    "]\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "<font color=\"red\" size=5>\n",
    "\n",
    "\n",
    "\n",
    "</font>\n",
    "<hr />\n",
    "\n",
    "\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Start Round 1 ...\n",
      "client_0: Loss = 0.5071, Accuracy = 0.84\n",
      "client_1: Loss = 0.5201, Accuracy = 0.8427\n",
      "client_2: Loss = 0.5391, Accuracy = 0.8342\n",
      "client_3: Loss = 0.5462, Accuracy = 0.8319\n",
      "client_4: Loss = 0.5412, Accuracy = 0.8332\n",
      "client_5: Loss = 0.5028, Accuracy = 0.8442\n",
      "client_6: Loss = 0.5495, Accuracy = 0.831\n",
      "client_7: Loss = 0.5107, Accuracy = 0.8461\n",
      "After round 1, train_loss = 0.4183, dev_loss = 0.4182, dev_acc = 0.8787\n",
      "\n",
      "Start Round 2 ...\n",
      "client_0: Loss = 0.3128, Accuracy = 0.9067\n",
      "client_1: Loss = 0.3334, Accuracy = 0.9039\n",
      "client_2: Loss = 0.3334, Accuracy = 0.9057\n",
      "client_3: Loss = 0.3494, Accuracy = 0.8952\n",
      "client_4: Loss = 0.345, Accuracy = 0.8957\n",
      "client_5: Loss = 0.3151, Accuracy = 0.9072\n",
      "client_6: Loss = 0.3249, Accuracy = 0.907\n",
      "client_7: Loss = 0.3248, Accuracy = 0.9034\n",
      "After round 2, train_loss = 0.2993, dev_loss = 0.2991, dev_acc = 0.9117\n",
      "\n",
      "Start Round 3 ...\n",
      "client_0: Loss = 0.2303, Accuracy = 0.9332\n",
      "client_1: Loss = 0.2484, Accuracy = 0.929\n",
      "client_2: Loss = 0.2478, Accuracy = 0.9281\n",
      "client_3: Loss = 0.2566, Accuracy = 0.9231\n",
      "client_4: Loss = 0.248, Accuracy = 0.9277\n",
      "client_5: Loss = 0.2316, Accuracy = 0.9331\n",
      "client_6: Loss = 0.2339, Accuracy = 0.9322\n",
      "client_7: Loss = 0.2432, Accuracy = 0.9309\n",
      "After round 3, train_loss = 0.2266, dev_loss = 0.2284, dev_acc = 0.9336\n",
      "\n",
      "Start Round 4 ...\n",
      "client_0: Loss = 0.18, Accuracy = 0.9453\n",
      "client_1: Loss = 0.1936, Accuracy = 0.9457\n",
      "client_2: Loss = 0.1901, Accuracy = 0.9464\n",
      "client_3: Loss = 0.206, Accuracy = 0.939\n",
      "client_4: Loss = 0.1981, Accuracy = 0.9416\n",
      "client_5: Loss = 0.1818, Accuracy = 0.9487\n",
      "client_6: Loss = 0.1824, Accuracy = 0.9462\n",
      "client_7: Loss = 0.187, Accuracy = 0.9472\n",
      "After round 4, train_loss = 0.1803, dev_loss = 0.1821, dev_acc = 0.945\n",
      "\n",
      "Start Round 5 ...\n",
      "client_0: Loss = 0.1455, Accuracy = 0.9587\n",
      "client_1: Loss = 0.1583, Accuracy = 0.9559\n",
      "client_2: Loss = 0.1537, Accuracy = 0.9565\n",
      "client_3: Loss = 0.168, Accuracy = 0.9515\n",
      "client_4: Loss = 0.1625, Accuracy = 0.9551\n",
      "client_5: Loss = 0.152, Accuracy = 0.9568\n",
      "client_6: Loss = 0.1476, Accuracy = 0.9564\n",
      "client_7: Loss = 0.1561, Accuracy = 0.9568\n",
      "After round 5, train_loss = 0.1505, dev_loss = 0.1526, dev_acc = 0.9542\n",
      "\n",
      "Start Round 6 ...\n",
      "client_0: Loss = 0.1258, Accuracy = 0.9624\n",
      "client_1: Loss = 0.137, Accuracy = 0.9604\n",
      "client_2: Loss = 0.1317, Accuracy = 0.9613\n",
      "client_3: Loss = 0.1457, Accuracy = 0.958\n",
      "client_4: Loss = 0.1386, Accuracy = 0.9614\n",
      "client_5: Loss = 0.1295, Accuracy = 0.9626\n",
      "client_6: Loss = 0.1288, Accuracy = 0.9646\n",
      "client_7: Loss = 0.135, Accuracy = 0.9612\n",
      "After round 6, train_loss = 0.1305, dev_loss = 0.132, dev_acc = 0.9601\n",
      "\n",
      "Start Round 7 ...\n",
      "client_0: Loss = 0.1096, Accuracy = 0.9677\n",
      "client_1: Loss = 0.1219, Accuracy = 0.9648\n",
      "client_2: Loss = 0.1149, Accuracy = 0.9671\n",
      "client_3: Loss = 0.1278, Accuracy = 0.9645\n",
      "client_4: Loss = 0.122, Accuracy = 0.9662\n",
      "client_5: Loss = 0.1164, Accuracy = 0.9677\n",
      "client_6: Loss = 0.1116, Accuracy = 0.9695\n",
      "client_7: Loss = 0.1203, Accuracy = 0.9663\n",
      "After round 7, train_loss = 0.117, dev_loss = 0.1196, dev_acc = 0.9639\n",
      "\n",
      "Start Round 8 ...\n",
      "client_0: Loss = 0.0983, Accuracy = 0.9706\n",
      "client_1: Loss = 0.1098, Accuracy = 0.9697\n",
      "client_2: Loss = 0.1024, Accuracy = 0.9707\n",
      "client_3: Loss = 0.1139, Accuracy = 0.9679\n",
      "client_4: Loss = 0.112, Accuracy = 0.969\n",
      "client_5: Loss = 0.1056, Accuracy = 0.9688\n",
      "client_6: Loss = 0.1031, Accuracy = 0.9705\n",
      "client_7: Loss = 0.1092, Accuracy = 0.9671\n",
      "After round 8, train_loss = 0.1053, dev_loss = 0.1083, dev_acc = 0.9695\n",
      "\n",
      "Start Round 9 ...\n",
      "client_0: Loss = 0.0908, Accuracy = 0.9743\n",
      "client_1: Loss = 0.1015, Accuracy = 0.972\n",
      "client_2: Loss = 0.0919, Accuracy = 0.9732\n",
      "client_3: Loss = 0.1046, Accuracy = 0.9702\n",
      "client_4: Loss = 0.1023, Accuracy = 0.9704\n",
      "client_5: Loss = 0.0962, Accuracy = 0.9714\n",
      "client_6: Loss = 0.092, Accuracy = 0.9737\n",
      "client_7: Loss = 0.0992, Accuracy = 0.9727\n",
      "After round 9, train_loss = 0.0968, dev_loss = 0.1002, dev_acc = 0.9706\n",
      "\n",
      "Start Round 10 ...\n",
      "client_0: Loss = 0.0806, Accuracy = 0.9758\n",
      "client_1: Loss = 0.0948, Accuracy = 0.9727\n",
      "client_2: Loss = 0.0851, Accuracy = 0.9753\n",
      "client_3: Loss = 0.0958, Accuracy = 0.9732\n",
      "client_4: Loss = 0.0943, Accuracy = 0.975\n",
      "client_5: Loss = 0.0885, Accuracy = 0.9749\n",
      "client_6: Loss = 0.0853, Accuracy = 0.9755\n",
      "client_7: Loss = 0.0929, Accuracy = 0.9738\n",
      "After round 10, train_loss = 0.0899, dev_loss = 0.0931, dev_acc = 0.9728\n",
      "\n"
     ]
    }
   ],
   "source": [
    "global_net = to_device(FederatedNet(), device)\n",
    "history = []\n",
    "for i in range(rounds):\n",
    "    print(\"Start Round {} ...\".format(i + 1))\n",
    "    curr_parameters = get_parameters(global_net)\n",
    "    new_parameters = dict(\n",
    "        [(layer_name, {\"weight\": 0, \"bias\": 0}) for layer_name in curr_parameters]\n",
    "    )\n",
    "    for client in clients:\n",
    "        client_parameters = client.train(curr_parameters)\n",
    "        fraction = client.get_dataset_size() / total_train_size\n",
    "        for layer_name in client_parameters:\n",
    "            new_parameters[layer_name][\"weight\"] += (\n",
    "                fraction * client_parameters[layer_name][\"weight\"]\n",
    "            )\n",
    "            new_parameters[layer_name][\"bias\"] += (\n",
    "                fraction * client_parameters[layer_name][\"bias\"]\n",
    "            )\n",
    "    apply_parameters(global_net, new_parameters)\n",
    "\n",
    "    train_loss, train_acc = evaluate(global_net, train_dataset)\n",
    "    dev_loss, dev_acc = evaluate(global_net, val_dataset)\n",
    "    print(\n",
    "        \"After round {}, train_loss = {}, dev_loss = {}, dev_acc = {}\\n\".format(\n",
    "            i + 1, round(train_loss, 4), round(dev_loss, 4), round(dev_acc, 4)\n",
    "        )\n",
    "    )\n",
    "    history.append((train_loss, dev_loss))\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "<font color=\"red\" size=5>\n",
    "\n",
    "نمودار خطا\n",
    "\n",
    "</font>\n",
    "<hr />\n",
    "\n",
    "همان‌طور که ملاحظه می‌کنید، این روش در مرور زمان همگرا می‌شود.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGzCAYAAAAMr0ziAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZwUlEQVR4nO3deZyN5f/H8deZfR9jm4Vhxr4NsjRfezGFJNpQsrVLSkNFhaKylPLNGt8KEVq0l6UJ2UI0CMkyljBjn5UZzrl/f5yfwzSWmWnGfWbm/Xw87gdzn/u+zud24ry7ruu+bothGAYiIiIiTszF7AJERERErkeBRURERJyeAouIiIg4PQUWERERcXoKLCIiIuL0FFhERETE6SmwiIiIiNNTYBERERGnp8AiIiIiTk+BRUQc+vbtS0RERL7OffXVV7FYLAVbUC7dcsst1KtX77rH7d+/H4vFwqxZswq/KBEpUAosIkWAxWLJ1bZixQqzSy2Wpk6dqpAjYjKLniUk4vzmzp2b7ec5c+awbNkyPv7442z7b7vtNoKDg/P9PufPn8dms+Hp6Znncy9cuMCFCxfw8vLK9/vn1y233MKJEyf4448/rnmcYRhkZmbi7u6Oq6trrtuvV68eZcuWVSAUMZGb2QWIyPU99NBD2X7+9ddfWbZsWY79/5SRkYGPj0+u38fd3T1f9QG4ubnh5ubc/6RYLBZTAtWVnDt3Dg8PD1xc1NEtkhv6myJSTFycx7Fp0yZat26Nj48PL730EgBff/01nTp1IiwsDE9PT6pWrcro0aOxWq3Z2vjnHJaLcz7efvttZsyYQdWqVfH09KRp06Zs3Lgx27lXmsNisVh4+umn+eqrr6hXrx6enp7UrVuXxYsX56h/xYoVNGnSBC8vL6pWrcr777+f53kxO3bs4NZbb8XHx4cKFSowfvz4bK9faQ5LYmIi/fr1o2LFinh6ehIaGkqXLl3Yv38/ABEREWzfvp2VK1c6ht5uueUWx/n79u3j/vvvp3Tp0vj4+PCf//yH77//Pse1WSwWFixYwCuvvEKFChXw8fEhPj4ei8XCu+++m+Na1q5di8ViYf78+bm+fpHizLn/d0hE8uTkyZN07NiRHj168NBDDzmGh2bNmoWfnx+xsbH4+fnx888/M2LECFJSUnjrrbeu2+4nn3xCamoqTzzxBBaLhfHjx3PPPfewb9++6/bKrF69mkWLFvHUU0/h7+/Pe++9x7333svBgwcpU6YMAL///jsdOnQgNDSU1157DavVyqhRoyhXrlyur/306dN06NCBe+65h27duvH555/z4osvEhUVRceOHa963r333sv27dsZOHAgERERHDt2jGXLlnHw4EEiIiKYOHEiAwcOxM/Pj5dffhnA8eealJRE8+bNycjI4JlnnqFMmTLMnj2bu+66i88//5y7774723uNHj0aDw8PhgwZQmZmJrVq1aJFixbMmzeP5557Ltux8+bNw9/fny5duuT6z0CkWDNEpMgZMGCA8c+/vm3atDEAY/r06TmOz8jIyLHviSeeMHx8fIxz58459vXp08eoXLmy4+eEhAQDMMqUKWOcOnXKsf/rr782AOPbb7917Bs5cmSOmgDDw8PD2LNnj2Pfli1bDMCYNGmSY1/nzp0NHx8f4/Dhw459u3fvNtzc3HK0eSUXr33OnDmOfZmZmUZISIhx77335riejz76yDAMwzh9+rQBGG+99dY1269bt67Rpk2bHPsHDRpkAMaqVasc+1JTU43IyEgjIiLCsFqthmEYxvLlyw3AqFKlSo7P4v333zcAY+fOnY59WVlZRtmyZY0+ffpc99pFSgoNCYkUI56envTr1y/Hfm9vb8fvU1NTOXHiBK1atSIjI4M///zzuu12796doKAgx8+tWrUC7MMh1xMTE0PVqlUdP9evX5+AgADHuVarlZ9++omuXbsSFhbmOK5atWrX7Bn5Jz8/v2xzejw8PLj55puvWaO3tzceHh6sWLGC06dP5/q9Lvrhhx+4+eabadmyZbY6Hn/8cfbv38+OHTuyHd+nT59snwVAt27d8PLyYt68eY59S5Ys4cSJE9edoyRSkiiwiBQjFSpUwMPDI8f+7du3c/fddxMYGEhAQADlypVzfBkmJydft91KlSpl+/lieMnNl/w/z714/sVzjx07xtmzZ6lWrVqO466072oqVqyYY77L5e9zJZ6enowbN44ff/yR4OBgWrduzfjx40lMTMzVex44cICaNWvm2F+7dm3H65eLjIzMcWypUqXo3Lkzn3zyiWPfvHnzqFChAm3bts1VHSIlgQKLSDHyz/97Bzhz5gxt2rRhy5YtjBo1im+//ZZly5Yxbtw4AGw223XbvdotwEYuVkX4N+fmRX7fZ9CgQfz111+MGTMGLy8vhg8fTu3atfn9998LtD648ucD0Lt3b/bt28fatWtJTU3lm2++4YEHHtAdRCKX0aRbkWJuxYoVnDx5kkWLFtG6dWvH/oSEBBOruqR8+fJ4eXmxZ8+eHK9daV9hqFq1KoMHD2bw4MHs3r2bhg0bMmHCBMf6N1e7U6ly5crs2rUrx/6Lw2yVK1fO1ft36NCBcuXKMW/ePKKjo8nIyKBXr175vBqR4knxXaSYu9jzcHlPQ1ZWFlOnTjWrpGxcXV2JiYnhq6++4siRI479e/bs4ccffyzU987IyODcuXPZ9lWtWhV/f38yMzMd+3x9fTlz5kyO8++44w42bNjAunXrHPvS09OZMWMGERER1KlTJ1d1uLm58cADD/Dpp58ya9YsoqKiqF+/fv4uSqSYUg+LSDHXvHlzgoKC6NOnD8888wwWi4WPP/64wIdk/o1XX32VpUuX0qJFC/r374/VamXy5MnUq1eP+Pj4Qnvfv/76i3bt2tGtWzfq1KmDm5sbX375JUlJSfTo0cNxXOPGjZk2bRqvv/461apVo3z58rRt25ahQ4cyf/58OnbsyDPPPEPp0qWZPXs2CQkJfPHFF3ka0unduzfvvfcey5cvdwzXicglCiwixVyZMmX47rvvGDx4MK+88gpBQUE89NBDtGvXjvbt25tdHmAPBD/++CNDhgxh+PDhhIeHM2rUKHbu3Jmru5jyKzw8nAceeIC4uDg+/vhj3NzcqFWrFp9++in33nuv47gRI0Zw4MABxo8fT2pqKm3atKFt27YEBwezdu1aXnzxRSZNmsS5c+eoX78+3377LZ06dcpTLY0bN6Zu3brs3LmTnj17FvSlihR5epaQiDitrl27sn37dnbv3m12KTfETTfdROnSpYmLizO7FBGnozksIuIUzp49m+3n3bt388MPP2RbBr84++2334iPj6d3795mlyLilNTDIiJOITQ0lL59+1KlShUOHDjAtGnTyMzM5Pfff6d69epml1do/vjjDzZt2sSECRM4ceIE+/btc5oHNIo4E81hERGn0KFDB+bPn09iYiKenp40a9aMN998s1iHFYDPP/+cUaNGUbNmTebPn6+wInIV6mERERERp6c5LCIiIuL0FFhERETE6RWLOSw2m40jR47g7+9/1SW0RURExLkYhkFqaiphYWHXXWixWASWI0eOEB4ebnYZIiIikg+H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7ODHH39k586dTJs2zTH68d577/HNN9/w6aefsmvXLubNm0dERES+aykURh4tWLDA8PT0NGbNmmXs2LHDePzxx41SpUoZiYmJhmEYRq9evYyhQ4de9fw+ffoYXbp0ybZv7NixRqlSpYyvv/7a2Lp1q9GlSxcjMjLSOHv2bK5qSk5ONgAjOTk5r5dTIO4O32iAYQyoucyU9xcRKa7Onj1r7NixI9v3QVqaYdj7O27slpaW+7q7dOliPPzww46f33//fSMsLMywWq1XPadu3brGpEmTHD9XrlzZePfdd696/OXfp2lpaYa7u7sxb948x+tZWVlGWFiYMX78eMMwDKNz585Gv379rtjWwIEDjbZt2xo2my03l5dnV/ocDSNv3995XkSke/fuHD9+nBEjRpCYmEjDhg1ZvHixY9LswYMHcXHJ29SYF154gfT0dB5//HHOnDlDy5YtWbx4MV5eXnktzxRPDfHhy2dhzq6bGXvgJH6Vy5hdkohIseXjA2lp5rxvbvXs2ZPHHnuMqVOn4unpybx58+jRo4fj+zEtLY1XX32V77//nqNHj3LhwgXOnj2b7x6WvXv3cv78eVq0aOHY5+7uzs0338zOnTsB6N+/P/feey+bN2/m9ttvp2vXrjRv3hyw33F02223UbNmTTp06MCdd97J7bffnq9aCku+Vj17+umnefrpp6/42ooVK6557qxZs3Lss1gsjBo1ilGjRuWnHNO1HVCb6i8cYHdmZeYNXsYTn99mdkkiIsWWxQK+vmZXcW2dO3fGMAy+//57mjZtyqpVq3j33Xcdrw8ZMoRly5bx9ttvU61aNby9vbnvvvvIysoqtJo6duzIgQMH+OGHH1i2bBnt2rVjwIABvP322zRq1IiEhAR+/PFHfvrpJ7p160ZMTAyff/55odWTV3qWUAFwcbXwZOcjAEz7tiKG1XadM0REpDjz8vLinnvuYd68ecyfP5+aNWvSqFEjx+tr1qyhb9++3H333URFRRESEsL+/fvz/X5Vq1bFw8ODNWvWOPadP3+ejRs3UqdOHce+cuXK0adPH+bOncvEiROZMWOG47WAgAC6d+/OzJkzWbhwIV988YVj/osz0LryBaTvhChe/vwsW7Jq8+uk9TQbFG12SSIiYqKePXty5513sn37dh566KFsr1WvXp1FixbRuXNnLBYLw4cPz3FXUV74+vrS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n36a7777juXLl1OxYkWzyymxNm3axLFjx2jUqBFubm64ubmxcuVK3nvvPdzc3LBarWaXWKKEhoZSp06dbPtq167NwYMHTaqoZHv++ecZOnQoPXr0ICoqil69evHcc88xZswYs0sTICQkBICkpKRs+5OSkhyvFSYFlmLOMAyefvppvvzyS37++WciIyPNLqlEa9euHdu2bSM+Pt6xNWnShJ49exIfH4+rq6vZJZYoLVq0yHGb/19//UXlypVNqqhky8jIwMUl+9eSq6srNpvNpIrkcpGRkYSEhBAXF+fYl5KSwvr162nWrFmhv7+GhIq5AQMG8Mknn/D111/j7+/vGGcMDAzE29vb5OpKHn9//xzzh3x9fSlTpozmFZngueeeo3nz5rz55pt069aNDRs2MGPGDGbMmGF2aSVS586deeONN6hUqRJ169bl999/55133uHhhx82u7QSIy0tjT179jh+TkhIID4+ntKlS1OpUiUGDRrE66+/TvXq1YmMjGT48OGEhYU57iQqVIYUa8AVt48++sjs0uT/tWnTxnj22WfNLqPE+vbbb4169eoZnp6eRq1atYwZM2aYXVKJlZKSYjz77LNGpUqVDC8vL6NKlSrGyy+/bGRmZppdWomxfPnyK35n9OnTxzAMw7DZbMbw4cON4OBgw9PT02jXrp2xa9euG1Kb1mERERERp6c5LCIiIuL0FFhERETE6SmwiIiIiNNTYBERERGnp8AiIiIiTk+BRURERJyeAouIiIg4PQUWERERcXoKLCIiIuL0FFhERETE6SmwiIiIiNP7P4dZdm5HptgYAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "\n",
    "\n",
    "plt.plot(\n",
    "    [i + 1 for i in range(len(history))],\n",
    "    [history[i][0] for i in range(len(history))],\n",
    "    color=\"r\",\n",
    "    label=\"train loss\",\n",
    ")\n",
    "plt.plot(\n",
    "    [i + 1 for i in range(len(history))],\n",
    "    [history[i][1] for i in range(len(history))],\n",
    "    color=\"b\",\n",
    "    label=\"val loss\",\n",
    ")\n",
    "plt.legend()\n",
    "plt.title(\"Training history\")\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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NZ133nm1fj0AQPnCIaZ4+s1vfqO//OUv+uCDD1hnHgAcFKrx5O6779bYsWMVExOjnTt3SpKOHz8uSdqzZ4/y8/OZ1AXHkChBWPnVr36lF154QStWrNCQIUNq/XqnnHKKJBOQhg8fXuvXs9nrPgIA6qdQjid33323/vnPf2rWrFle68oDAPwjlGNKabm5uZLMDGQAgLNCMZ7s2bNHr7/+ul5//fUyj5166qnq27ev1q1b51jbEN7YowRhZcqUKWrYsKGuv/56HThwoMzj27dv1+zZs6v9egMGDNApp5yiJ598UllZWWUeP3ToUI3a2bBhw5IMOQCg/gnVePLEE0/oySef1J///GfdfvvtNXpPAIBvQjGmHD58uNzZwy+99JIks6k7AMBZoRhP3n///TLHFVdcIUmaP3++nn766Rq1ASgPFSUIK6eccopef/11XXHFFerevbvGjRunXr16KT8/X8uXL9c777yjCRMmVPv1IiIi9NJLL2nUqFHq2bOnJk6cqJNOOkn79u3Tl19+qaSkJP3nP//xuZ0DBgzQF198oZkzZ6p169bq0KGDBg8eXOH1//nPf7R+/XpJUkFBgTZs2KCHH35YknTJJZeoT58+PrcBAFCxUIwn77//vqZMmaLOnTure/fu+te//uX1+AUXXFCyzjwAwDmhGFP+9a9/ac6cORozZow6duyozMxMffbZZ/r88881evRolnUEAD8IxXgyZsyYMvfZFSSjRo1Ss2bNfH5/oCIkShB2LrnkEm3YsEFPPPGEPvjgAz3//POKjY1Vnz599NRTT+mGG27w6fWGDh2qFStW6KGHHtLf/vY3ZWVlKSUlRYMHD67xurszZ87UjTfeqHvvvVe5ubkaP358pYmSd999V6+88krJz999952+++47SdLJJ59MogQA/CDU4omdcN+6dauuvfbaMo9/+eWXJEoAwE9CLaacddZZWr58ud544w0dOHBAUVFR6tq1q2bOnKnbbrutRu8PAKhaqMUToC65LHaQBgAAAAAAAAAAYYo9SgAAAAAAAAAAQNgiUQIAAAAAAAAAAMIWiRIAAAAAAAAAABC2SJQAAAAAAAAAAICwRaIEAAAAAAAAAACELRIlAAAAAAAAAAAgbEUFugFOKC4u1v79+5WYmCiXyxXo5gBAULEsS5mZmWrdurUiIsifE1MAoOaIKW7EEwCoOeKJ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5iUp/OIJS29FR0vx8VJurumIVGONNQAyayZWoxwwkGJiYlRUVFSta7/++mtNmDBBl112mSSTbbfXdvSX7t27a8+ePdqzZ09Jhv2HH37Q8ePH1aNHj5LrunTpoi5duujOO+/UVVddpX/+858l7WzTpo1uvvlm3XzzzZo6dapefPFF3XbbbX5tNyrBUimA74IgnkjEFNQx4gngO+KJI4gnISgpSTpxgpgC+CIIYgrxxHk+VZTMmDFDp512mhITE9WiRQuNGTNGW7ZsqfJ577zzjrp166a4uDj17t27zA71lmVp2rRpatWqleLj4zV8+HBt3brVt9+kNpixBYSk9u3b65tvvtHOnTt1+PDhSrPenTt31nvvvad169Zp/fr1uvrqqx3Nkpdn+PDh6t27t6655hqtXbtWq1at0rhx43Tuuedq4MCBys3N1aRJk7RkyRLt2rVLX3/9tb799lt1795dknTHHXfos88+044dO7R27Vp9+eWXJY8hQIgnQMgipqBOEU+AkEU8QZ2zk+/EFCCkEE+c51OiZOnSpbr11lu1cuVKff755yooKNCFF16o7OzsCp+zfPlyXXXVVbruuuv03XffacyYMRozZow2bdpUcs3jjz+uZ555RnPmzNE333yjhg0basSIETpx4kTNfzNf0BEBQtJdd92lyMhI9ejRQ82bN6907cWZM2eqcePGOuOMMzR69GiNGDFCp556ql/b53K59MEHH6hx48Y655xzNHz4cHXs2FFvvfWWJCkyMlJHjhzRuHHj1KVLF11++eUaNWqUpk+fLkkqKirSrbfequ7du2vkyJHq0qWL/v73v/u1zU4h8Q4g2BBTUKeoKAFCFvEEdc7uoxBTgJBCPPEDqxYOHjxoSbKWLl1a4TWXX365dfHFF3vdN3jwYOumm26yLMuyiouLrZSUFOuJJ54oefz48eNWbGys9cYbb1SrHenp6ZYkKz09vQa/hWVZAwdalmRZH39cs+cDIS43N9f64YcfrNzc3EA3BTVU2b9hrb9Da2DEiBHWP//5T2vTpk3WunXrrIsuushq27atlZWVVeFzvv76aysyMtJ6/PHHrR9++MG69957rejoaGvjxo0l1zz66KNWcnKytWDBAmv9+vXWJZdcYnXo0MGn/+/W6vOYOdPEk6uv9v25QBggnoSG+hZTHnnkEWvgwIFWQkKC1bx5c+vSSy+1Nm/eXOXz3n77batr165WbGys1atXL+vjUn2B4uJi67777rNSUlKsuLg46/zzz7d++umnarerVp9FaqqJJy6XZRUX+/58IAwQU4JffYsn9VmtPo/zzjMx5fXXnW8YEAKIJ6Ghon9HX74/a7WZe/ov2egmlezrsWLFCg0fPtzrvhEjRmjFihWSpB07digtLc3rmuTkZA0ePLjkmtLy8vKUkZHhddQK2XUAqFMLFy7UhAkT1LNnT/Xt21fz5s3T7t27tWbNmgqfM3v2bI0cOVJ33323unfvroceekinnnqq/va3v0ky1SSzZs3Svffeq0svvVR9+vTR/PnztX//fi1YsKBufjEqSgCgzoVk1bsdTyxLquT3AACgSlQpAkC11DhRUlxcrDvuuENnnnmmevXqVeF1aWlpatmypdd9LVu2VFpaWsnj9n0VXVPajBkzlJycXHLYG8LUGANbABBQgUq8O454AgB1LiST7/HxUlSUOWdgCwDqRMgvD0w8AYBK1ThRcuutt2rTpk168803nWxPtUydOlXp6eklx549e2r3ggxsAUDABDLxLjlcpchsLQAIuJBIvrtc9FEAoI6FZIWixGbuAFBNUTV50qRJk/TRRx/pq6++0sknn1zptSkpKTpw4IDXfQcOHFBKSkrJ4/Z9rVq18rqmX79+5b5mbGysYmNja9L08hE0ACBg7MT7smXLAvL+M2bMKNksrNYY1AKAgApk8j0vL095eXklPzuyPPDRo8QUAKgjCxcu9Pp53rx5atGihdasWaNzzjmn3Od4VihK0kMPPaTPP/9cf/vb3zRnzpwyFYqSNH/+fLVs2VILFizQlVde6d9fSmIyFwBUk08VJZZladKkSXr//fe1ePFidejQocrnDBkyRIsWLfK67/PPP9eQIUMkSR06dFBKSorXNRkZGfrmm29KrvE7yhABICDsxPuXX37paOK9omvK42iVIokSAAioQFa9O748MANbABBQgaxQdLTqnTEvAKgWnxIlt956q/71r3/p9ddfV2JiotLS0pSWlqbc3NySa8aNG6epU6eW/Hz77bdr4cKFeuqpp7R582Y98MADWr16tSZNmiRJcrlcuuOOO/Twww/rww8/1MaNGzVu3Di1bt1aY8aMcea3rAoDWwBQp+pT4j02NlZJSUleR415DmpZVs1fBwDgs0An31keGABCR6CXB3Y0+c4qKgBQLT4lSp5//nmlp6dr6NChatWqVcnx1ltvlVyze/dupaamlvx8xhln6PXXX9cLL7ygvn376t///rcWLFjgFWimTJmi2267TTfeeKNOO+00ZWVlaeHChYqLi3PgV6wGOiEAUKdCPvFeWCjV1ZrDABDm6kvy3dHEu0RFCQAEUCArFCU/Vb0TTwCgUj7tUWJVY3bskiVLytw3duxYjR07tsLnuFwuPfjgg3rwwQd9aY5zSJQAQJ16/vnnJUlDhw71uv+f//ynJkyYIMkk3iMi3Pl8O/F+77336s9//rM6d+5cbuI9OztbN954o44fP66zzjqrbhPvDRuaDXgty8SU+Pi6eV8ACGO33nqrXn/9dX3wwQclyXfJLG0S/8v38Lhx43TSSSdpxowZkkzy/dxzz9VTTz2liy++WG+++aZWr16tF154QZJ38r1z587q0KGD7rvvPqreASAMBHpfXsnhvXmpKAGAaqnRZu4hh6ABAHUqZBPvERFmYCs93RylSuwBAM4L2eQ7iRIAqFOWZem2227T+++/ryVLlvhUoXjHHXeU3FdRhaKdGLErFG+55RZ//BplUaEIANXi09JbIYsyRADV0L59e82aNSvQzUB9x8AWgGogpjjHsqxyDztJIpnk+7x587yeN3bsWG3ZskV5eXnatGmTLrroIq/H7eR7WlqaTpw4oS+++EJdunSpg9/oFwxsAagG4olzQn55YOIJgEoQT6goMRjUAkLS0KFD1a9fP8e+6L/99ls1bNjQkddCCCOmACGJmII6RzwBQhLxpP4K2QpFz1VULMssFQwg6BFPnEeiRKITAoQxy7JUVFSkqKiqvw6bN29eBy1C0GMGMBC2iClwFH0UIGwRTwIjZJcHtvsnBQXSiRPsowiEEeKJb1h6S3IHjZwcqbAwsG0B4IgJEyZo6dKlmj17tlwul1wul3bu3KklS5bI5XLp008/1YABAxQbG6tly5Zp+/btuvTSS9WyZUslJCTotNNO0xdffOH1mqXLEF0ul1566SVddtllatCggTp37qwPP/yw0na9+uqrGjhwoBITE5WSkqKrr75aBw8e9Lrm+++/169+9SslJSUpMTFRZ599trZv317y+Ny5c9WzZ0/FxsaqVatWJWXdqCcY2AJCDjEFAUHiHQg5xBMERMOG7ioSYgoQEogn/kGiRJISE93nDGwB1WJZUnZ23R/VmOQjSZo9e7aGDBmiG264QampqUpNTVWbNm1KHr/nnnv06KOP6scff1SfPn2UlZWliy66SIsWLdJ3332nkSNHavTo0dq9e3el7zN9+nRdfvnl2rBhgy666CJdc801Onr0aIXXFxQU6KGHHtL69eu1YMEC7dy502sN9X379umcc85RbGysFi9erDVr1uh3v/udCn9J4j7//PO69dZbdeONN2rjxo368MMP1alTp+p9KKgbDGwBPglUPCGmEFPqPRLvgE+IJ27EE3iJiCCmAD5izMsIu3hihYD09HRLkpWenl7zF4mPtyzJsnbscKxdQKjIzc21fvjhBys3N7fkvqws859MXR9ZWdVv97nnnmvdfvvtXvd9+eWXliRrwYIFVT6/Z8+e1rPPPlvyc7t27aynn3665GdJ1r333uvxmWRZkqxPP/202m389ttvLUlWZmamZVmWNXXqVKtDhw5Wfn5+ude3bt3a+stf/lLt17eV929oc+Q7NITU+vO44Qbzf9aHHnK2YUAIqE/xhJhCTPG3Wn8WX35p/o/avbuj7QJCRenvIuKJQTwJTbX+PNq0Mf9nXbXK2YYBIaA+9VGIJzWLJ5ZVcUzx5fuTihIb2XUgrAwcONDr56ysLN11113q3r27GjVqpISEBP34449VZtf79OlTct6wYUMlJSWVKSv0tGbNGo0ePVpt27ZVYmKizj33XEkqeZ9169bp7LPPVnR0dJnnHjx4UPv379f5559f7d8TAUA8AcIOMQV+QTwBwg7xBH7juaE7gJBHPKkZNnO3JSVJBw4QNIBqatBAysoKzPs6oWHDhl4/33XXXfr888/15JNPqlOnToqPj9dvfvMb5efnV/o6pb/cXS6XiouLy702OztbI0aM0IgRI/Taa6+pefPm2r17t0aMGFHyPvGVbKxX2WOoR1h6C/BJoOKJ/d5OIKbAL0iUAD4hnrgRT1AGfRTAJ4x5GeEWT0iU2AgagE9cLrMnXH0WExOjoqKial379ddfa8KECbrsssskmWz7zp07HW3P5s2bdeTIET366KMla0euXr3a65o+ffrolVdeUUFBQZmAlJiYqPbt22vRokUaNmyYo22DgxjYAnwSDPFEIqYgAOz+SWamVFQkRUYGtj1APUc8qRniSZiw+yiMeQHVEgwxhXjiPJbesjGwBYSc9u3b65tvvtHO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hw5KSUnxes2MjAx988031X7N2nJ0I3dPjRtLc+aY8yeflL791uE3AIDw4Y9BLcn5gS17YtjppzucfL/vPrOu/PHj0rXXSkVFDr44AASvUJ3MZS+75Xg1iac//Uk67TQpPV26/nqWTAEAH/mrj+L0ZC57f5LTTjNFII675x7TV0lPl667jngCICj5vPTW5MmT9eKLL+qVV17Rjz/+qFtuuUXZ2dmaOHGiJGncuHGaam8OKOnBBx/Uf//7X/38889au3atfvvb32rXrl26/vrrJZm1HO+44w49/PDD+vDDD7Vx40aNGzdOrVu31pgxY5z5LSthWX5MlEjSJZdIV18tFRdLEyeaacYAEObqy6CW5PzAlqP7k3iKjjZLozRsKC1dahLwAICQncxlb+Tu+P4knqKizJIpcXHSwoXSSy/58c0AoH6rT30Upydz+WV/Ek9RUdIrr5h48vnn7knDABBEfE6UXHHFFXryySc1bdo09evXT+vWrdPChQtLygh3796t1NTUkuuPHTumG264Qd27d9dFF12kjIwMLV++XD169Ci5ZsqUKbrtttt044036rTTTlNWVpYWLlyouLg4B37Fym3fLh08aJbpHTDAT28ye7bUooX0/ffSww/76U0AIHiE6qCWJK1caW798padOknPPGPO77vPvRkKAIS5UJvMlZvrLkb3a0WJJHXrJv31r+Z88mRpxw4/vyEA1E/1qY/i9GQuu6LE0f1JSuvWTXr0UXN+113SL8kiAAgaVghIT0+3JFnp6ek+P/f11y1LsqwzzvBDwzy98455o8hIy1q71s9vBgDVV5vv0Np48803rdjYWGvevHnWDz/8YN14441Wo0aNrLS0NMuyLOvaa6+17rnnnpLrp0+fbn322WfW9u3brTVr1lhXXnmlFRcXZ33//fcl1zz66KNWo0aNrA8++MDasGGDdemll1odOnSwcnNzq92u2nwe+/aZr/qICMvKzPT56dVTXGxZv/61eaOuXS0rO9tPbwQAvgtUTLEsy3r22Wettm3bWjExMdagQYOslStXljx27rnnWuPHjy/5+Y477ii5tmXLltZFF11krS31N3pxcbF13333WS1btrRiY2Ot888/39qyZUu121Obz+LLL83XfKtW5mvf7woLLevss82bnnuuZRUV1cGbAkDF6KN4q83ncfCg+XqXLOvoUZ+f7pui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Dx+uzp0766WXXtIll1wSxpKhNuedd577uH///howYICOPPJILVmyRKecckoYS9Yw06ZN06pVq6JuXtC61HZPl19+ufu4f//+at++vU455RRt3LhRRx55ZKiLWa9evXopPz9fRUVF+te//qXJkyfrww8/DHexECWIJ9EpmmMK8SRy44lETEHjEU+iE/EkshBPAIOYEn2iOZ5IxJRIjinhjicxN/VW69atlZiYeNiq9zt27FBubm6YSuWs5s2bq2fPntqwYUO4i+II+3uJ5e+sW7duat26dVR8Z9OnT9d//vMfffDBBzriiCPcz+fm5qqyslL79u3zOT8avqfa7smf4cOHS1LEflfJycnq3r27hgwZorlz52rgwIGaP39+VH8/kYp4En3iIZ5I0RNTiCeRHU8kYkqoEE+iD/EkshBPiCfwIKZEn3iIKdESTyRiSqTHlHDHk5hLlCQnJ2vIkCFavHix+7nq6motXrxYI0aMCGPJnFNaWqqNGzeqffv24S6KI7p27arc3Fyf76y4uFjLli2Lme9s27Zt2rNnT0R/Z5Zlafr06Xr11Vf1/vvvq2vXrj6vDxkyRElJST7f07p167Rly5aI/Z7quyd/8vPzJSmivytv1dXVqqioiMrvJ9IRT6JPPMQTKfJjCvHEiLZ4IhFTgoV4En2IJ5GBeGIQT+CNmBJ94iGmRHo8kYgptmiLKSGPJ44tCx9BXnjhBSslJcVasGCBtXr1auvyyy+3mjdvbhUWFoa7aI3y5z//2VqyZIm1adMm69NPP7VGjRpltW7d2tq5c2e4i9ZgJSUl1ldffWV99dVXliTrnnvusb766ivrxx9/tCzLsu644w6refPm1muvvWZ988031vjx462uXbta5eXlYS65f3XdT0lJiXXNNddYS5cutTZt2mS999571tFHH2316NHDOnDgQLiLXqurrrrKysnJsZYsWWIVFBS4t/3797vPufLKK61OnTpZ77//vrV8+XJrxIgR1ogRI8JY6rrVd08bNmywbrnlFmv58uXWpk2brNdee83q1q2bdcIJJ4S55P5df/311ocffmht2rTJ+uabb6zrr7/ecrlc1jvvvGNZVvR9P9GAeBJ5Yi2eWFbsxRTiSeTHE8sipoQa8STyEE+IJ+FAPIn87ygaEFMiT6zFlFiLJ5ZFTImGmBIJ8SQmEyWWZVn333+/1alTJys5OdkaNmyY9fnnn4e7SI127rnnWu3bt7eSk5OtDh06WOeee661YcOGcBcrIB988IEl6bBt8uTJlmVZVnV1tXXjjTda7dq1s1JSUqxTTjnFWrduXXgLXYe67mf//v3WaaedZrVp08ZKSkqyOnfubF122WUR/48Wf/cjyXryySfd55SXl1u///3vrRYtWljp6enWxIkTrYKCgvAVuh713dOWLVusE044wWrZsqWVkpJide/e3br22mutoqKi8Ba8FhdffLHVuXNnKzk52WrTpo11yimnuAOGZUXf9xMtiCeRJdbiiWXFXkwhnkR+PLEsYko4EE8iC/GEeBIOxJPI/46iBTElssRaTIm1eGJZxJRoiCmREE9clmVZ9Y87AQAAAAAAAAAAiD0xt0YJAAAAAAAAAABAQ5EoAQAAAAAAAAAAcYtECQAAAAAAAAAAiFskSgAAAAAAAAAAQNwiUQIAAAAAAAAAAOIWiRIAAAAAAAAAABC3SJQAAAAAAAAAAIC4RaIEAAAAAAAAAADELRIlAAAAAAAAAAAgbpEoAQAAAAAAAAAAcYtECQAAAAAAAAAAiFskSgAAAAAAAAAAQNwiUQIAAAAAAAAAAOIWiRIAAAAAAAAAABC3SJQAAAAAAAAAAIC4RaIEAAAAAAAAAADELRIlAAAAAAAAAAAgbpEoAQAAAAAAAAAAcYtECQAAAAAAAAAAiFskSgAAAAAAAAAAQNwiUQIAAAAAAAAAAOIWiRIAAAAAAAAAABC3SJQAAAAAAAAAAIC4RaIEAAAAAAAAAADELRIlAAAAAAAAAAAgbpEoAQAAAAAAAAAAcYtECVCHLl26aMqUKe7HS5Yskcvl0pIlS8JWJgBA9CGeAACcQkwBADiBeAL4IlGCuLRx40ZdccUV6tatm1JTU5Wdna1f/epXmj9/vsrLy8NdPN1+++1auHBhg893uVx+tzvuuCN4hQQAxFw8kaQdO3boiiuuUIcOHZSamqouXbrokksuCU4BAQBusRRTFixYUGsdxeVy6dlnnw1uYQEgjsVSPJGkoqIiXXfdderRo4fS0tLUuXNnXXLJJdqyZUvwCom41CzcBQBC7c0339TZZ5+tlJQUTZo0Sf369VNlZaU++eQTXXvttfruu+/0yCOP+H3vCSecoPLyciUnJwe1jLfffrt++9vfasKECQ1+z6mnnqpJkyb5PDd48GCHSwYAsMViPNm6dat+9atfSZKuvPJKdejQQdu3b9cXX3wRxFICAGItppxwwgl65plnDnv+3nvv1ddff61TTjklCCUEAMRaPKmurtapp56q1atX6/e//7169uypDRs26B//+IfefvttrVmzRllZWUEtL+IHiRLElU2bNum8885T586d9f7776t9+/bu16ZNm6YNGzbozTffrPX9CQkJSk1NDUVRA9azZ0/97ne/C3cxACAuxGo8ueKKK9SsWTN9+eWXatWqVbiLAwBxIRZjSrdu3dStWzef58rLy/X73/9eJ598snJzc8NUMgCIXbEYTz7//HN9+eWXeuCBBzRt2jT387169dLFF1+s9957TxMnTgxjCRFLmHoLceXOO+9UaWmpHn/8cZ+AYevevbuuvvrqWt9f23yNy5Yt05gxY5STk6P09HSdeOKJ+vTTT33Oufnmm+VyubRhwwZNmTJFzZs3V05OjqZOnar9+/e7z3O5XCorK9NTTz3lHpruPWdkXcrLy3XgwIEGnQsAaLxYjCdr167VW2+9pWuvvVatWrXSgQMHdPDgwYb9QQAAjRaLMcWfN954QyUlJbrwwgsDeh8AoGFiMZ4UFxdLktq1a+fzvH1/aWlptb4XCBSJEsSVN954Q926ddOxxx7r2DXff/99nXDCCSouLtZNN92k22+/Xfv27dPJJ5/sd6qSc845RyUlJZo7d67OOeccLViwQHPmzHG//swzzyglJUXHH3+8nnnmGT3zzDO64oor6i3HggULlJGRobS0NPXp00fPPfecY/cIAPAVi/Hkvffek2QqIaeccorS0tKUlpamsWPHavPmzY7dJwDAVyzGFH+effZZpaWl6ayzzmry/QEADheL8WTo0KHKyMjQjTfeqPfff18//fSTPvzwQ1133XU65phjNGrUKMfuFZAFxImioiJLkjV+/PgGv6dz587W5MmT3Y8/+OADS5L1wQcfWJZlWdXV1VaPHj2s0aNHW9XV1e7z9u/fb3Xt2tU69dRT3c/ddNNNliTr4osv9vmMiRMnWq1atfJ5LiMjw+dz63Psscda8+bNs1577TXroYcesvr162dJsv7xj380+BoAgIaJ1Xjyxz/+0ZJktWrVyhozZoz14osvWn//+9+tzMxM68gjj7TKysoafL8AgIaJ1ZhS0549e6zk5GTrnHPOadT7AQB1i+V4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7rlHLVq00LHHHqtx48Zp9OjROvroo4NaPpfLpddee00tWrTQCSecoFGjRqlbt2568cUXJUmJiYnas2ePJk2apJ49e+qcc87R2LFjNWfOHElSVVWVpk2bpt69e2vMmDHq2bOn/vGPfwS1zKhHTo7ZE0+AmENMiVxz587VMccco6ysLLVt21YTJkzQunXr6n3fyy+/rKOOOkqpqanq37+//vvf//q8blmWZs+erfbt2ystLU2jRo3S+vXrg3UbvqifADGLeIKQo44CxCTiSRBYMaCoqMiSZBUVFTXuAsccY1mSZb3xhrMFA2JEeXm5tXr1aqu8vDzcRUEj1fUdNvk3tBFuv/12a+jQoVZmZqbVpk0ba/z48dbatWvrfd9LL71k9erVy0pJSbH69etnvfnmmz6vV1dXWzfeeKOVm5trpaamWqeccor1/fffB1S2Jv097rrLxJOLLgr8vUAcIJ7EhkiLKaNHj7aefPJJa9WqVVZ+fr51+umnW506dbJKS0trfc+nn35qJSYmWnfeeae1evVq64YbbrCSkpKsb7/91n3OHXfcYeXk5FgLFy60vv76a+vMM8+0unbt2uD/fpv0t9i2zcSTxETLqq4O/P1AHCCmRL9IiycxW0c54QQTU156KfD3AnGAeBIbavseA/n9DGhESUz21pLosQUAIfbhhx9q2rRp+vzzz/Xuu+/q4MGDOu2001RWVlbrez777DOdf/75uuSSS/TVV19pwoQJmjBhglatWuU+584779R9992nhx9+WMuWLVNGRoZGjx6tAwcOhOK2iCcAEAaLFi3SlClT1LdvXw0cOFALFizQli1btGLFilrfM3/+fI0ZM0bXXnutevfurVtvvVVHH320HnjgAUmmfjJv3jzdcMMNGj9+vAYMGKCnn35a27dv18KFC4N/U3Y8qaqSysuD/3kAgNivoxQVhebzACBKBZQoifmgQcMWAIRETDZqSVRCACACFP3yG9yyZctaz1m6dKlGjRrl89zo0aO1dOlSSdKmTZtUWFjoc05OTo6GDx/uPqemiooKFRcX+2yNlpFhFhGVqKMAQIjEfB2FeAIAdQooURKzQcOer5GGLQAIi3A1akkON2xRCQGAsKqurtaMGTP0q1/9Sv369av1vMLCQrVr187nuXbt2qmwsND9uv1cbefUNHfuXOXk5Li3jh07Nv5GEhKIKQAQ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J0Z695batyezDgBhE4IewJs2Sc89ZxIka9d6nm/VSjrnHOn88800imlpQSsCACDYvBMlluXYP/APHZK+/to3KfLdd/5793btKp18skmOnHIKcQUAolaIku9FRdLjj0v33WfWwpXMqJDzzpN+9zvTXtW6tUm2p6QEtSgA4INESSAGDjT7b75xtCJSm/XrpVdeMdsXX/g/JznZDGPv0sVUUrz3vXpJLVoEtYgAgMawKyH79jl62b17pZdfNsmRTz7xPJ+aaqY9+d3vpNGj6XEFADHDjidVVWbIR0ZGky/50UfS5ZdL69Yd/lr79tIxx3i2oUNNAh4AEAOCPN38xo0mOfLEE1JpqXmuVSvpqquk3//exBgACCcSJYGwF+fYs0favt3MUeUgyzI5GDs54r0AosslHXecNGqUWQDRToa0b2+mTgEARJGOHc1+wwZHLrd8uZnT94UXpMpK85zLZXr4/u530llnedrSAAAxJD3dZMMPHDD1E3uq4EbYt0+67jrp0UfN4+xsafhw38SIw9UfAEAkOfJIs/cejt5EliV9/LGZXuu118xjycx6MmOGqaswEhFApCBREojUVLNC1HffmYyGAzUFy5KWLZP+/W+THPnhB89rzZqZ4etnnSWNH2+m0QIAxID+/c1+0yappETKygr4EhUVZvTIAw+YOGIbOFC66CIzdJ0GLQCIcS6X+eFftkxasaJRiRLLMnWRP/zBs47V5ZdL//d/UvPmzhYXABDB7DrKt982+VLff2+mAX72Wd++YWPGSH/6k3TqqUwHDyDykCgJ1IABJlHy9dfS2LGNvoxlSf/5jzRnjqnT2NLSTOA46yzpjDOYOgsAYlKrVmZIYEGBiSn/8z8Nfuu2bdL/+3/SI49IO3ea55KTzbojf/iDNGxYkMoMAIhMQ4eaRMmXX5oseQC2bZOmTZNef9087tXLxJcTTghCOQEAkc1OlKxaZRalCnD6ksJCM8L92WfNiHdberoZOXL11WYkCQBEKhIlgRowQHr++UYv6G5Z0htvmATJypXmufR0s/jhWWeZJIkDUwsDACJd//4mUfLtt/UmSizLzBn/wAPSq6+aqeglM2LkqqukSy9l1CEAxK1jjjF771apelRXSw89JM2aZQY2JiVJ118v/eUvZhA9ACAO9expAkJJiVllvWvXet9SXGzqJ88+Ky1ebOKLZGatP+00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aBgnfkMb6/7777c6depkJScnW8OGDbM+//xz92snnniiNXnyZPfjGTNmuM9t166ddfrpp1srV670uV51dbV14403Wu3atbNSUlKsU045xVq3bl1AZWrK3+Oll8zP++DBAb+1YaqrLeucc8yHtG1rWVu2BOmDAKBxwhlTIk1T/xZdu5qf+3ffdbhg/tx4o/mwPn0s69ChEHwgANQtXPEkEtu8LKvpf48jjjA/80uWNOrt9bvySvMBLVpY1g8/BOlDACBwgfx+Ngs0sXLuuedq165dmj17tgoLCzVo0KDDemslJHgGqti9tQoLC9WiRQsNGTLEb2+tsrIyXX755dq3b5+OO+64kPbWkqTNm83iVklJklfRnNe/v3TLLdKsWdLVV0snnyw5tBg9AESb6dOna7o95UcNS5Ys8Xl877336t57763zei6XS7fccotuueUWp4oYEMfXJ6nJ5ZKeeEJat076+mtpwgQzsiQ9PUgfCAAIhx07pE2bzM++471//Zk5U7r/fmn1aumFF6QLLwzBhwJA5InFNq/CQjPq3eUK4gwq8+aZaVq++EL6zW+kTz+V0tKC9GEAEBwuy4r++Z+Ki4uVk5OjoqKiRs/b+O9/S7/9rQkaK1Y4XMCaDh2SjjtOWrZMOu00adGiIE48DAB1c+I3NJY05e8xYoSZKuXpp816hkGzebNpOdu9W7rgArOQInEEQAQgpng05W/x+uvS+PFS377SqlVBKmBNc+dKf/mL1L27SZgkJYXogwHgcMQTX035e7zxhnTmmaZT8HffBamAkrR1q2lU271bmjLFdPCijgIgzAL5/QxojZJYZq9PEpSF3Gtq1kx66imz4NU770iPPBKCDwUABFNFhSeWBH264S5dpH/9y8ST556T7roryB8IAAilkK1P4u0Pf5DatpU2bDB1FQBATAja+iQ1dewovfiilJAgLVhAWxeAqEOi5BdffWX2QRuGWFOvXqbXliT9+c+mQgIAiFrJyaYD7nPPSUceGYIPPPFEM8RdMgvxLloUgg8FAIRC8+amuhDCdX7Ngu6zZpnjW24xPQAAAFEvZIkSyUwvb7d1/eEPZiYVAIgSJEp+YfcCDlmiRJL++EfphBOksjLplFOkjRtD+OEAACe5XCZBcv75IRxh/vvfS5deKlmWdN550vffh+iDAQDBdN110tq10sUXh/iDr7xS6tDB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T9xKlBi1EdKjRw/k5+ejZ8+esFgsAKRhMmDAAOTn5yMoKMidyzQsXpM5eNo1edr1ALymhpRSKC0tRVRUVCfVrjGr1YqxY8ciIyMDM2bMAADU1dUhIyMD8+fPd/k3qampyMjIwGOPPVb/3hdffIHU1FQAQFxcHCIiIpCRkVEfPy5fvowdO3Zg7ty5TdbFG2OKp10PwGsyC16T8bX3erw9pjiKiory+HgC8JrMwNOuB+A1mYXZ2ihG6fMCWm6j8H8v5sBrMgdPuyZPux6g6+KJW4kSozZCfHx80L9/f5e/CwoK8pj/UWh4TebgadfkadcD8Joc6TFKa8GCBZg5cybGjRuH5ORkvPzyyygrK8OsWbMAAPfffz/69euH9PR0AMCjjz6KCRMm4A9/+AOmTZuGdevWYffu3fjzn/8MALBYLHjsscfwwgsvICEhAXFxcVi0aBGioqLqY1ZreFNM8bTrAXhNZsFrMr72XA9jivCmeALwmszA064H4DWZhVnaKEbt8wKajin834s58JrMwdOuydOuB+j8eOL20ltGbIQQEZH53H333Th//jwWL16MgoICjB49Gp999ln9+r2nTp2Cj49P/fk///nP8cEHH+DZZ5/FM888g4SEBGzatAkjR46sP+fJJ59EWVkZ5syZg+LiYlx33XX47LPPEBAQ0OXXR0REXYcxhYiIOgL7vIiIvJfbiRI2QoiIqKPMnz+/ydFZmZmZjd678847ceeddzb5eRaLBcuWLcOyZcs6qopERGQSjClERNRe7PMiIvJebdrM3QyNEJvNhiVLljit6Wh2vCZz8LRr8rTrAXhN5D5Pu7+edj0Ar8kseE3G52nXYzSeeH95TcbnadcD8JrMwqzXxD4vffCazIHXZHyedj1A112TRSmlOvVfICIiIiIiIiIiIiIiMiiflk8hIiIiIiIiIiIiIiLyTEyUEBERERERERERERGR12KihIiIiIiIiIiIiIiIvBYTJURERERERERERERE5LU8NlGyevVqxMbGIiAgACkpKdi5c6feVWqz5557DhaLxakMHTpU72q55euvv8bNN9+MqKgoWCwWbNq0yen3SiksXrwYkZGR6NatG9LS0nD06FF9KtsKLV3PAw880Og7mzp1qj6VbaX09HRcc8016NmzJ/r27YsZM2YgNzfX6ZzKykrMmzcPvXv3Ro8ePXD77bej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Ki8vT23evFkNHDhQjR8/Xueau/b000+rrKwslZeXp/bv36+efvppZbFY1Oeff66UMt/3YwaMJ8bjafFEKc+LKYwnxo8nSjGmdDXGE+NhPGE80QPjifG/IzNgTDEeT4spnhZPlGJMMUNMMUI88chEiVJKvfrqqyo6OlpZrVaVnJystm/frneV2uzuu+9WkZGRymq1qn79+qm7775bHTt2TO9quWXr1q0KQKMyc+ZMpZRSdXV1atGiRSo8PFzZbDY1adIklZubq2+lm9Hc9ZSXl6vJkyerPn36KH9/fxUTE6Nmz55t+P9ocXU9ANR///d/159TUVGhHnnkERUaGqoCAwPVrbfeqs6dO6dfpVvQ0jWdOnVKjR8/XvXq1UvZbDYVHx+vnnjiCVVSUqJvxZvw7//+7yomJkZZrVbVp08fNWnSpPqAoZT5vh+zYDwxFk+LJ0p5XkxhPDF+PFGKMUUPjCfGwnjCeKIHxhPjf0dmwZhiLJ4WUzwtnijFmGKGmGKEeGJRSqmW550QERERERERERERERF5Ho/bo4SIiIiIiIiIiIiIiKi1mCghIiIiIiIiIiIiIiKvxUQJERERERERERERERF5LSZKiIiIiIiIiIiIiIjIazFRQkREREREREREREREXouJEiIiIiIiIiIiIiIi8lpMlBARERERERERERERkddiooSIiIiIiIiIiIiIiLwWEyVEREREREREREREROS1mCghIiIiIiIiIiIiIiKvxUQJERERERERERERERF5LSZKiIiIiIiIiIiIiIjIa/1/Yhoiz+xc/7IAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 2000x1000 with 8 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# PLOT THE TRAINING HISTORY OF CLIENTS\n",
    "fig, axs = plt.subplots(2, 4, figsize=(20, 10))\n",
    "for i in range(num_clients):\n",
    "    axs[i // 4, i % 4].plot(\n",
    "        [j + 1 for j in range(len(clients[i].history))],\n",
    "        [clients[i].history[j][0] for j in range(len(clients[i].history))],\n",
    "        color=\"r\",\n",
    "        label=\"train loss\",\n",
    "    )\n",
    "    axs[i // 4, i % 4].plot(\n",
    "        [j + 1 for j in range(len(clients[i].history))],\n",
    "        [clients[i].history[j][1] for j in range(len(clients[i].history))],\n",
    "        color=\"b\",\n",
    "        label=\"train acc\",\n",
    "    )\n",
    "    axs[i // 4, i % 4].set_title(\"Client {}\".format(i + 1))\n",
    "    axs[i // 4, i % 4].legend()\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "<font color=\"red\" size=5>\n",
    "\n",
    "ناهمگنی داده\n",
    "\n",
    "</font>\n",
    "<hr />\n",
    "\n",
    "در این محیط بسیار محتمل است که داده کاربران مختلف از یک توزیع مشابه نباشند. این مورد می‌تواند برای دقت و محرمانگی مدل چالش ایجاد کند.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "برای این سناریو ابتدا داده ناهمگن سنتز می‌کنیم. این داده به این صورت است که هر کاربر داده‌ای از یک کلاس به خصوص دارد.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 10/10 [00:45<00:00,  4.54s/it]\n"
     ]
    }
   ],
   "source": [
    "data_with_labels = []\n",
    "for i in tqdm.tqdm(range(10)):\n",
    "    data_with_labels.append(\n",
    "        torch.utils.data.Subset(\n",
    "            train_dataset,\n",
    "            [j for j in range(len(train_dataset)) if train_dataset[j][1] == i],\n",
    "        )\n",
    "    )\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "حال کلاسی را تعریف می‌کنیم تا این داده ناهمگن را به عنوان دیتاست لفاف‌بندی کند.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [],
   "source": [
    "class HeteroDataset(torch.utils.data.Dataset):\n",
    "    \"\"\"\n",
    "    Heterogeneous dataset.\n",
    "    Args:\n",
    "        dataset (torch.utils.data.Dataset): Dataset.\n",
    "        label (int): Label.\n",
    "    \"\"\"\n",
    "\n",
    "    def __init__(self, dataset, label):\n",
    "        \"\"\"\n",
    "        Heterogeneous dataset.\n",
    "        Args:\n",
    "            dataset (torch.utils.data.Dataset): Dataset.\n",
    "            label (int): Label.\n",
    "        \"\"\"\n",
    "        self.dataset = dataset\n",
    "        self.label = label\n",
    "\n",
    "    def __getitem__(self, index):\n",
    "        \"\"\"\n",
    "        Get item.\n",
    "        Args:\n",
    "            index (int): Index.\n",
    "        Returns:\n",
    "            tuple: Tuple of (data, label).\n",
    "        \"\"\"\n",
    "        return self.dataset[index][0], self.label\n",
    "\n",
    "    def __len__(self):\n",
    "        return len(self.dataset)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "کاربران ساخته شده هر یک داده‌ای از سه کلاس به خصوص خواهند داشت.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "clients = [\n",
    "    Client(\"client_\" + str(i), FederatedNet(), HeteroDataset(data_with_labels[i] + data_with_labels[i + 1] + data_with_labels[i + 2], i))\n",
    "    for i in range(8)\n",
    "]\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "حال مجددا آموزش مدل را با این دادگان جدید انجام خواهیم داد.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Start Round 1 ...\n",
      "client_0: Loss = 0.0002, Accuracy = 1.0\n",
      "client_1: Loss = 0.0002, Accuracy = 1.0\n",
      "client_2: Loss = 0.0002, Accuracy = 1.0\n",
      "client_3: Loss = 0.0002, Accuracy = 1.0\n",
      "client_4: Loss = 0.0002, Accuracy = 1.0\n",
      "client_5: Loss = 0.0002, Accuracy = 1.0\n",
      "client_6: Loss = 0.0002, Accuracy = 1.0\n",
      "client_7: Loss = 0.0002, Accuracy = 1.0\n",
      "After round 1, train_loss = 9.3376, dev_loss = 9.3993, dev_acc = 0.113\n",
      "\n",
      "Start Round 2 ...\n",
      "client_0: Loss = 0.0, Accuracy = 1.0\n",
      "client_1: Loss = 0.0, Accuracy = 1.0\n",
      "client_2: Loss = 0.0, Accuracy = 1.0\n",
      "client_3: Loss = 0.0, Accuracy = 1.0\n",
      "client_4: Loss = 0.0, Accuracy = 1.0\n",
      "client_5: Loss = 0.0, Accuracy = 1.0\n",
      "client_6: Loss = 0.0, Accuracy = 1.0\n",
      "client_7: Loss = 0.0, Accuracy = 1.0\n",
      "After round 2, train_loss = 673.6898, dev_loss = 678.1398, dev_acc = 0.0977\n",
      "\n",
      "Start Round 3 ...\n",
      "client_0: Loss = 0.0, Accuracy = 1.0\n",
      "client_1: Loss = 0.0, Accuracy = 1.0\n",
      "client_2: Loss = 0.0, Accuracy = 1.0\n",
      "client_3: Loss = 0.0, Accuracy = 1.0\n",
      "client_4: Loss = 0.0, Accuracy = 1.0\n",
      "client_5: Loss = 0.0, Accuracy = 1.0\n",
      "client_6: Loss = 0.0, Accuracy = 1.0\n",
      "client_7: Loss = 0.0, Accuracy = 1.0\n",
      "After round 3, train_loss = 364.8879, dev_loss = 364.1917, dev_acc = 0.1103\n",
      "\n",
      "Start Round 4 ...\n",
      "client_0: Loss = 0.0, Accuracy = 1.0\n",
      "client_1: Loss = 0.0, Accuracy = 1.0\n",
      "client_2: Loss = 0.0, Accuracy = 1.0\n",
      "client_3: Loss = 0.0, Accuracy = 1.0\n",
      "client_4: Loss = 0.0, Accuracy = 1.0\n",
      "client_5: Loss = 0.0, Accuracy = 1.0\n",
      "client_6: Loss = 0.0, Accuracy = 1.0\n",
      "client_7: Loss = 0.0, Accuracy = 1.0\n",
      "After round 4, train_loss = 1356.5356, dev_loss = 1346.3748, dev_acc = 0.1419\n",
      "\n",
      "Start Round 5 ...\n",
      "client_0: Loss = 0.0, Accuracy = 1.0\n",
      "client_1: Loss = 0.0, Accuracy = 1.0\n",
      "client_2: Loss = 0.0, Accuracy = 1.0\n",
      "client_3: Loss = 0.0, Accuracy = 1.0\n",
      "client_4: Loss = 0.0, Accuracy = 1.0\n",
      "client_5: Loss = 0.0, Accuracy = 1.0\n",
      "client_6: Loss = 0.0, Accuracy = 1.0\n",
      "client_7: Loss = 0.0, Accuracy = 1.0\n",
      "After round 5, train_loss = 6526.7554, dev_loss = 6565.3608, dev_acc = 0.1441\n",
      "\n",
      "Start Round 6 ...\n",
      "client_0: Loss = 0.0, Accuracy = 1.0\n",
      "client_1: Loss = 0.0, Accuracy = 1.0\n",
      "client_2: Loss = 0.0, Accuracy = 1.0\n",
      "client_3: Loss = 0.0, Accuracy = 1.0\n",
      "client_4: Loss = 0.0, Accuracy = 1.0\n",
      "client_5: Loss = 0.0, Accuracy = 1.0\n",
      "client_6: Loss = 0.0, Accuracy = 1.0\n",
      "client_7: Loss = 0.0, Accuracy = 1.0\n",
      "After round 6, train_loss = 53415.6211, dev_loss = 53442.4805, dev_acc = 0.1133\n",
      "\n",
      "Start Round 7 ...\n",
      "client_0: Loss = 0.0, Accuracy = 1.0\n",
      "client_1: Loss = 0.0, Accuracy = 1.0\n",
      "client_2: Loss = 0.0, Accuracy = 1.0\n",
      "client_3: Loss = 0.0, Accuracy = 1.0\n",
      "client_4: Loss = 0.0, Accuracy = 1.0\n",
      "client_5: Loss = 0.0, Accuracy = 1.0\n",
      "client_6: Loss = 0.0, Accuracy = 1.0\n",
      "client_7: Loss = 0.0, Accuracy = 1.0\n",
      "After round 7, train_loss = 134188.0469, dev_loss = 137560.875, dev_acc = 0.1158\n",
      "\n",
      "Start Round 8 ...\n",
      "client_0: Loss = 0.0, Accuracy = 1.0\n",
      "client_1: Loss = 0.0, Accuracy = 1.0\n",
      "client_2: Loss = 5.9506, Accuracy = 0.0\n",
      "client_3: Loss = 4.3719, Accuracy = 0.0002\n",
      "client_4: Loss = 0.0, Accuracy = 1.0\n",
      "client_5: Loss = 0.0, Accuracy = 1.0\n",
      "client_6: Loss = 0.0, Accuracy = 1.0\n",
      "client_7: Loss = 0.0, Accuracy = 1.0\n",
      "After round 8, train_loss = 11246.9268, dev_loss = 10671.7314, dev_acc = 0.1003\n",
      "\n",
      "Start Round 9 ...\n",
      "client_0: Loss = 0.2822, Accuracy = 1.0\n",
      "client_1: Loss = 21.7293, Accuracy = 0.0001\n",
      "client_2: Loss = 21.1322, Accuracy = 0.0001\n",
      "client_3: Loss = 17.1365, Accuracy = 0.0001\n",
      "client_4: Loss = 0.0008, Accuracy = 1.0\n",
      "client_5: Loss = 20.6395, Accuracy = 0.0001\n",
      "client_6: Loss = 26.2303, Accuracy = 0.0001\n",
      "client_7: Loss = 13.9341, Accuracy = 0.0002\n",
      "After round 9, train_loss = 371.4204, dev_loss = 276.6191, dev_acc = 0.0955\n",
      "\n",
      "Start Round 10 ...\n",
      "client_0: Loss = 0.1522, Accuracy = 1.0\n",
      "client_1: Loss = 54.2628, Accuracy = 0.0001\n",
      "client_2: Loss = 52.3638, Accuracy = 0.0\n",
      "client_3: Loss = 42.4896, Accuracy = 0.0\n",
      "client_4: Loss = 0.0204, Accuracy = 1.0\n",
      "client_5: Loss = 50.9872, Accuracy = 0.0\n",
      "client_6: Loss = 64.5784, Accuracy = 0.0\n",
      "client_7: Loss = 35.1138, Accuracy = 0.0\n",
      "After round 10, train_loss = 749.5091, dev_loss = 1422.0938, dev_acc = 0.0956\n",
      "\n"
     ]
    }
   ],
   "source": [
    "global_net = to_device(FederatedNet(), device)\n",
    "history = []\n",
    "for i in range(10):\n",
    "    print(\"Start Round {} ...\".format(i + 1))\n",
    "    curr_parameters = get_parameters(global_net)\n",
    "    new_parameters = dict(\n",
    "        [(layer_name, {\"weight\": 0, \"bias\": 0}) for layer_name in curr_parameters]\n",
    "    )\n",
    "    for client in clients:\n",
    "        client_parameters = client.train(curr_parameters)\n",
    "        fraction = client.get_dataset_size() / total_train_size\n",
    "        for layer_name in client_parameters:\n",
    "            new_parameters[layer_name][\"weight\"] += (\n",
    "                fraction * client_parameters[layer_name][\"weight\"]\n",
    "            )\n",
    "            new_parameters[layer_name][\"bias\"] += (\n",
    "                fraction * client_parameters[layer_name][\"bias\"]\n",
    "            )\n",
    "    apply_parameters(global_net, new_parameters)\n",
    "\n",
    "    train_loss, train_acc = evaluate(global_net, train_dataset)\n",
    "    dev_loss, dev_acc = evaluate(global_net, val_dataset)\n",
    "    print(\n",
    "        \"After round {}, train_loss = {}, dev_loss = {}, dev_acc = {}\\n\".format(\n",
    "            i + 1, round(train_loss, 4), round(dev_loss, 4), round(dev_acc, 4)\n",
    "        )\n",
    "    )\n",
    "    history.append((train_loss, dev_loss))\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "همان‌طور که ملاحظه می‌کنید دقت و عملکرد مدل دچار کاهش چشم‌گیری شده است. این به این دلیل است که آپدیت‌های مدل که از سمت کاربران ارسال می‌شود، بدون در نظر گرفتن ناهمگنی مدل بلکه تنها با در نظر گرفتن بهینه کردن مدل برای داده خودشان است.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "<font color=\"red\" size=5>\n",
    "\n",
    "حمله بازسازی ورودی\n",
    "\n",
    "</font>\n",
    "<hr />\n",
    "\n",
    "حال می‌خواهیم حمله بازسازی ورودی را مطرح کنیم. همان‌طور که مستحضر هستید هدف اصلی یادگیری فدرال حفظ حریم خصوصی با عدم ارسال داده به سرور بود. اما در این حمله نشان داده می‌شود که امکان بازسازی تصویر ورودی وجود دارد.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "در این قسمت نت‌ورکی که حمله بر روی آن صورت می‌گیرد را پیاده‌سازی می‌کنیم. این نتورک بسیار ساده‌ است و از سه لایه خطی تشکیل شده است.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "class TargetNetwork(torch.nn.Module):\n",
    "    def __init__(self):\n",
    "        super(TargetNetwork, self).__init__()\n",
    "        self.first_part = torch.nn.Sequential(\n",
    "            torch.nn.Linear(784, 500),\n",
    "            torch.nn.ReLU(),\n",
    "        )\n",
    "        self.second_part = torch.nn.Sequential(\n",
    "            torch.nn.Linear(500, 500),\n",
    "            torch.nn.ReLU(),\n",
    "            torch.nn.Linear(500, 10),\n",
    "            torch.nn.Softmax(dim=-1),\n",
    "        )\n",
    "\n",
    "    def forward(self, x):\n",
    "        return self.second_part(self.first_part(x))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [],
   "source": [
    "target_network = to_device(TargetNetwork(), device)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "در این قسمت مدل حمله‌کننده را پیاده‌سازی می‌کنیم. این مدل خروجی لایه اول را دریافت می‌کند و با استفاده از دو لایه‌ای که خود دارد، خروجی مدل را بازسازی می‌کند.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [],
   "source": [
    "class Attacker(torch.nn.Module):\n",
    "    \"\"\"\n",
    "    Attacker.\n",
    "    \"\"\"\n",
    "\n",
    "    def __init__(self):\n",
    "        super(Attacker, self).__init__()\n",
    "        self.layers = torch.nn.Sequential(\n",
    "            torch.nn.Linear(500, 1000),\n",
    "            torch.nn.ReLU(),\n",
    "            torch.nn.Linear(1000, 784),\n",
    "        )\n",
    "\n",
    "    def forward(self, x):\n",
    "        \"\"\"\n",
    "        Forward.\n",
    "        Args:\n",
    "            x (torch.Tensor): Input.\n",
    "        Returns:\n",
    "            torch.Tensor: Output.\n",
    "        \"\"\"\n",
    "        return self.layers(x)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [],
   "source": [
    "attacker = Attacker().to(device)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "حال مجموعه داده را بارگیری می‌کنیم.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [],
   "source": [
    "# with flatten transform and to tensor\n",
    "train_dataset = torchvision.datasets.MNIST(\n",
    "    root=\"./working/\",\n",
    "    train=True,\n",
    "    transform=torchvision.transforms.Compose(\n",
    "        [\n",
    "            torchvision.transforms.ToTensor(),\n",
    "            torchvision.transforms.Lambda(lambda x: x.flatten()),\n",
    "        ]\n",
    "    ),\n",
    "    download=True,\n",
    ")\n",
    "test_dataset = torchvision.datasets.MNIST(\n",
    "    root=\"./working/\",\n",
    "    train=False,\n",
    "    transform=torchvision.transforms.Compose(\n",
    "        [\n",
    "            torchvision.transforms.ToTensor(),\n",
    "            torchvision.transforms.Lambda(lambda x: x.flatten()),\n",
    "        ]\n",
    "    ),\n",
    "    download=True,\n",
    ")\n",
    "\n",
    "train_dataloader = DeviceDataLoader(\n",
    "    torch.utils.data.DataLoader(train_dataset, batch_size), device\n",
    ")\n",
    "test_dataloader = DeviceDataLoader(\n",
    "    torch.utils.data.DataLoader(test_dataset, batch_size), device\n",
    ")\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "حال مدل اصلی رو آموزش می‌دهیم.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1, loss = 1.6713\n",
      "Epoch 2, loss = 1.5394\n",
      "Epoch 3, loss = 1.5009\n",
      "Epoch 4, loss = 1.493\n",
      "Epoch 5, loss = 1.4877\n",
      "Epoch 6, loss = 1.486\n",
      "Epoch 7, loss = 1.4834\n",
      "Epoch 8, loss = 1.4802\n",
      "Epoch 9, loss = 1.48\n",
      "Epoch 10, loss = 1.4794\n"
     ]
    }
   ],
   "source": [
    "optimizer = torch.optim.Adam(target_network.parameters(), lr=0.001)\n",
    "criterion = torch.nn.CrossEntropyLoss()\n",
    "for epoch in range(10):\n",
    "    losses = []\n",
    "    for batch in train_dataloader:\n",
    "        images, labels = batch\n",
    "        optimizer.zero_grad()\n",
    "        outputs = target_network(images)\n",
    "        loss = criterion(outputs, labels)\n",
    "        loss.backward()\n",
    "        optimizer.step()\n",
    "        losses.append(loss.item())\n",
    "    print(\"Epoch {}, loss = {}\".format(epoch + 1, round(np.mean(losses), 4)))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Accuracy = 0.977\n"
     ]
    }
   ],
   "source": [
    "# calculate the accuracy\n",
    "correct = 0\n",
    "total = 0\n",
    "with torch.no_grad():\n",
    "    for batch in test_dataloader:\n",
    "        images, labels = batch\n",
    "        outputs = target_network(images)\n",
    "        _, predicted = torch.max(outputs.data, 1)\n",
    "        total += labels.size(0)\n",
    "        correct += (predicted == labels).sum().item()\n",
    "print(\"Accuracy = {}\".format(round(correct / total, 4)))\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "حال مدل حمله‌کننده را با استفاده از لایه اول مدل آموزش می‌دهیم.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|██████████| 469/469 [00:07<00:00, 63.80it/s]\n"
     ]
    }
   ],
   "source": [
    "optimizer = torch.optim.Adam(attacker.parameters(), lr=1e-4)\n",
    "\n",
    "for data, targets in tqdm.tqdm(train_dataloader):\n",
    "    data = data.to(device)\n",
    "    targets = targets.to(device)\n",
    "    optimizer.zero_grad()\n",
    "    target_outputs = target_network.first_part(data)\n",
    "    attack_outputs = attacker(target_outputs)\n",
    "    loss = ((data - attack_outputs) ** 2).mean()\n",
    "    loss.backward()\n",
    "    optimizer.step()\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "حال میخواهیم داده‌های ذخیره شده در مدل را بازسازی کنیم.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [],
   "source": [
    "for data, targets in test_dataloader:\n",
    "    target_outputs = target_network.first_part(data)\n",
    "    recreated_data = attacker(target_outputs)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 1000x1000 with 10 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot 10 reconstructed images\n",
    "plt.figure(figsize=(10, 10))\n",
    "for i in range(10):\n",
    "    plt.subplot(5, 5, i + 1)\n",
    "    plt.imshow(recreated_data[i].cpu().detach().numpy().reshape(28, 28))\n",
    "    plt.axis(\"off\")\n",
    "plt.show()\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<div dir=rtl id=\"\">\n",
    "<font face=\"XB Zar\" size=4>\n",
    "\n",
    "همان‌طور که ملاحظه می‌کنید داده‌های ذخیره شده در مدل با دقت بالایی بازسازی شده‌اند.\n",
    "\n",
    "</font>\n",
    "</div>"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## References\n",
    "\n",
    "[1] Li, Q., Wen, Z., Wu, Z., Hu, S., Wang, N., Li, Y., ... & He, B. (2021). A survey on federated learning systems: vision, hype and reality for data privacy and protection. IEEE Transactions on Knowledge and Data Engineering.\n",
    "\n",
    "[2] Lyu, L., Yu, H., & Yang, Q. (2020). Threats to federated learning: A survey. arXiv preprint arXiv:2003.02133."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.9"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "287ee184d78959fade4213e06aa8453c71d17316fcbc60aa682b94ecd5afe758"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
